package com.ruoyi.training.service;

import java.util.List;
import com.ruoyi.training.domain.CertificateIssue;
import com.ruoyi.training.dto.certificate.CertificateIssueDto;
import com.ruoyi.training.dto.certificate.GenerateElectronicSelectDto;
import com.ruoyi.training.dto.certificate.ViewElectronicDto;
import com.ruoyi.training.vo.certificate.*;

/**
 * 证书发放管理Service接口
 * 
 * @author hcc
 * @date 2025-11-06
 */
public interface ICertificateIssueService 
{
    /**
     * 查询证书发放管理
     * 
     * @param certificateIssueId 证书发放管理主键
     * @return 证书发放管理
     */
    public CertificateIssue selectCertificateIssueByCertificateIssueId(String certificateIssueId);

    /**
     * 查询证书发放管理列表
     * 
     * @param certificateIssue 证书发放管理
     * @return 证书发放管理集合
     */
    public List<CertificateIssue> selectCertificateIssueList(CertificateIssue certificateIssue);

    /**
     * 新增证书发放管理
     * 
     * @param certificateIssue 证书发放管理
     * @return 结果
     */
    public int insertCertificateIssue(CertificateIssue certificateIssue);

    /**
     * 修改证书发放管理
     * 
     * @param certificateIssue 证书发放管理
     * @return 结果
     */
    public int updateCertificateIssue(CertificateIssue certificateIssue);

    /**
     * 批量删除证书发放管理
     * 
     * @param certificateIssueIds 需要删除的证书发放管理主键集合
     * @return 结果
     */
    public int deleteCertificateIssueByCertificateIssueIds(String[] certificateIssueIds);

    /**
     * 删除证书发放管理信息
     * 
     * @param certificateIssueId 证书发放管理主键
     * @return 结果
     */
    public int deleteCertificateIssueByCertificateIssueId(String certificateIssueId);

    /**
     * 查询证书发放管理列表
     *
     * @param certificateIssueVo 证书发放管理
     * @return 列表
     */
    public List<CertificateIssueDto> getCertificateIssueList(CertificateIssueVo certificateIssueVo);

    /**
     * 新增证书发放管理
     * @param certificateIssue
     * @return
     */
    public int addCertificateIssue(CertificateIssue certificateIssue);

    /**
     * 生成电子证书数据查询
     *
     * @param generateElectronicSelectVo
     * @return
     */
    public GenerateElectronicSelectDto getGenerateElectronicSelect(GenerateElectronicSelectVo generateElectronicSelectVo);

    /**
     * 生成电子证书
     *
     * @param generateElectronicVo
     * @return
     */
    public int generateElectronic(GenerateElectronicVo generateElectronicVo);

    /**
     * 取消电子证书
     *
     * @param cancelElectronicVo
     * @return
     */
    public int cancelElectronic(CancelElectronicVo cancelElectronicVo);

    /**
     * 查看电子证书
     *
     * @param certificateIssueIds
     * @return
     */
    public List<ViewElectronicDto> getElectronicInfo(String[] certificateIssueIds);

    /**
     * 快递电子证书
     *
     * @param expressElectronicVo
     * @return
     */
    public int expressPaperCertificate(ExpressElectronicVo expressElectronicVo);

    /**
     * 现场领取证书
     *
     * @param certificateIssueIds
     * @return
     */
    public int scenePaperCertificate(String[] certificateIssueIds);
}
